package com.ylsk.check.service;

import java.util.List;
import com.ylsk.check.domain.JeevesReport;
import com.ylsk.check.domain.dto.JeevesReportDTO;
import com.ylsk.check.domain.so.JeevesReportSO;
import com.ylsk.check.domain.vo.JeevesReportVO;

/**
 * 占道上报Service接口
 *
 * @author yangsy
 * @date 2024-01-02
 */
public interface IJeevesReportService
{
    /**
     * 查询占道上报
     *
     * @param jeevesReportId 占道上报主键
     * @return 占道上报
     */
    public JeevesReportVO selectJeevesReportByJeevesReportId(Long jeevesReportId);

    /**
     * 查询占道上报列表
     *
     * @param jeevesReportSO 占道上报
     * @return 占道上报集合
     */
    public List<JeevesReportVO> selectJeevesReportList(JeevesReportSO jeevesReportSO);

    /**
     * 新增占道上报
     *
     * @param jeevesReportDTO 占道上报
     * @return 结果
     */
    public int insertJeevesReport(JeevesReportDTO jeevesReportDTO);

    /**
     * 修改占道上报
     *
     * @param jeevesReportDTO 占道上报
     * @return 结果
     */
    public int updateJeevesReport(JeevesReportDTO jeevesReportDTO);

    /**
     * 批量删除占道上报
     *
     * @param jeevesReportIds 需要删除的占道上报主键集合
     * @return 结果
     */
    public int deleteJeevesReportByJeevesReportIds(Long[] jeevesReportIds);

    /**
     * 删除占道上报信息
     *
     * @param jeevesReportId 占道上报主键
     * @return 结果
     */
    public int deleteJeevesReportByJeevesReportId(Long jeevesReportId);


    /**
     * 今天占道的项目报备数据
     * @return
     */
    public List<JeevesReportVO> selectJeevesByReportInfoId(List<Long> ids);

    /**
     * 查询占道上报列表 未撤场的数据
     *
     * @param jeevesReportSO 占道上报
     * @return 占道上报集合
     */
    public List<JeevesReportVO> selectJeevesNotWithdrawnList(JeevesReportSO jeevesReportSO);


    /**
     * 获取报备状态为非占道施工，但是今日开始需要占道施工的数据
     * @param jeevesReportSO
     * @return
     */
    public List<JeevesReportVO> getTodayJeevesReport(JeevesReportSO jeevesReportSO);

    /**
     * 添加撤场上报
     * @param jeevesReportId
     * @return
     */
    public int addWithdrawalReport(Long jeevesReportId);

}
